<?php


ini_set('display_errors', 1);
include dirname(__FILE__) . '/../Consultas/ReservaDao.php';
include dirname(__FILE__) . '/../Consultas/PaqueteDao.php';
include dirname(__FILE__) . '/../Consultas/HabitacionDao.php';
include_once 'RedirectionController.php';
/*
 * Recibimiento de Parámetros
 * 
 */
$ReservaController = new ReservaController();
if (isset($_POST['fecha_reserva']) && isset($_POST['id_paquete']) && isset($_POST['id_hotel']) && isset($_POST['habitaciones']) && isset($_POST['id_cliente'])) {
    
    $ReservaController->CrearReserva($_POST['fecha_reserva'], $_POST['id_paquete'], $_POST['id_hotel'], $_POST['habitaciones'], $_POST['id_cliente']);
}
else if(isset ($_POST['id_hotel']) && isset ($_POST['ajax'])){
    print json_encode($ReservaController->getListaAdicionalesReserva($_POST['id_hotel']));
}
else if(isset ($_POST['id_reserva']) && isset ($_POST['ajax'])){
    if($ReservaController->eliminarReserva($_POST['id_reserva']))
        print json_encode ("OK");
    else
        print json_encode ("ERROR");
}
else{
    print "Error: Debe diligenciar todos los datos solictados para poder crear la reserva";
    $ReservaController->redireccionar();
}

/**
 * Description of SedeController
 *
 * @author PaolaAndreaPedraza
 */
class ReservaController {

    private $ReservaDao;
    private $PaqueteDao;
    private $HabitacionDao;
    private $RedirectionController;

    public function __construct() {
        $this->ReservaDao = new ReservaDao();
        $this->HabitacionDao = new HabitacionDao();
        $this->PaqueteDao = new PaqueteDao();
        $this->RedirectionController = new RedirectionController();
    }

    public function consultarReserva() {


        return $this->ReservaDao->consultarReserva();
    }
    
    
    public function redireccionar(){
        $this->RedirectionController->redireccionar(RedirectionController::PAGINA_CREAR_RESERVA);
    }
    public function CrearReserva($fechaReserva, $nombrePaquete, $hotel, $habitaciones, $idCliente) {

        $arrayValores = Array();
        $arrayValores['fecha_reserva'] = $fechaReserva;
        $arrayValores['tb_paquete_id_tb_paquete'] = $nombrePaquete;
        $arrayValores['tb_cliente_id_tb_cliente'] = $idCliente;
        

        if ($this->ReservaDao->guardarReserva($arrayValores)){
            
            if(!$this->crearAsociacionReservaHabitaciones($habitaciones, $this->ReservaDao->getUltimoID('tb_reserva')))
                print "Se ha realizado la reserva con éxito pero no ha sido posible reservar todas las habitaciones solicitadas";
            else
                print "Se ha realizado la reserva con éxito";    
            
        }
        else
            print "Error al guardar la Reserva";
        $this->redireccionar();
    }
    
    
    public function getListaAdicionalesReserva($idHotel){
        
        $arrayDatos = Array();
        $arrayDatos['habitaciones'] = $this->HabitacionDao->consultarHabitacionesDisponiblesPorHotel($idHotel);
        $arrayDatos['paquetes'] = $this->PaqueteDao->consultarPaquetesPorHotel($idHotel);
        
        return $arrayDatos;
    }
        
    
    public function crearAsociacionReservaHabitaciones($habitaciones, $idReserva){
        
        $arrayValores= Array();
        $correcto=true;
        foreach ($habitaciones as $habitacion){
            
            $arrayValores['tb_habitacion_id_tb_habitacion']=$habitacion;
            $arrayValores['tb_reserva_id_tb_reserva']=$idReserva;
            
            if(!$this->HabitacionDao->guardarAsociacionHabitacionReserva($arrayValores))
                $correcto=false;
        }
        
        return $correcto;
        
    }
    
    
    public function eliminarReserva($idReserva){
        return $this->ReservaDao->borrarReserva($idReserva);
    }
}
?>

